#if !defined(__APP_BT_H__)
#define __APP_BT_H__

#include "app_device.h"

typedef enum
{
    BT_BAUD_9600 = '4',
    BT_BAUD_115200 = '8',
}BT_BAUD_RATE;

#define CONN_TYPE_BT 1
/**
 * @brief 蓝牙初始化配置
 * @param device 设备信息
 * @return int 0：成功，其他：失败
 * @note 设置预处理方法  2 （写前、读后）\
 * 设置蓝牙相关的参数默认值（波特率，网络ID，网络段地址，网络名）
 */
int app_bt_init(device_t *device);

/**
 * @brief 蓝牙写前预处理
 * @param 处理前的 数据
 * @param 处理前的 数据长度
 * @return 预处理后的数据长度
 */
int app_bt_pre_write(char *data, int data_len);

/**
 * @brief 蓝牙读后预处理
 * @param 处理后的 数据
 * @param 处理后的 数据长度
 * @return 预处理后的数据长度
 */
int app_bt_post_read(char *data, int data_len);

/**
 * @brief 蓝牙做连通性测试 AT/r/n
 * @param device 设备信息
 * @return int 0：成功，其他：失败
 */
int app_bt_status(device_t *device);

/**
 * @brief 重启  reset AT+RESET/r/n
 * @param device 设备信息
 * @return int 0：成功，其他：失败
 */
int app_bt_reset(device_t *device);

/**
 * @brief 设置波特率 AT+BAUD?/r/n
 * @param baudrate 波特率
 * @return int 0：成功，其他：失败
 */
int app_bt_set_baudrate(device_t *device, BT_BAUD_RATE baudrate);

/**
 * @brief 设置网络ID AT+NETID?/r/n
 * @param netid 网络ID
 * @return int 0：成功，其他：失败
 */
int app_bt_set_netid(device_t *device, char *netid);

/**
 * @brief 设置网络段地址 AT+MADDR?/r/n
 * @param maddr 网络段地址
 * @return int 0：成功，其他：失败
 */
int app_bt_set_maddr(device_t *device, char *maddr); 

/**
 * @brief 设置网络名 AT+NAME?/r/n
 * @param name 网络名
 * @return int 0：成功，其他：失败
 */
int app_bt_set_name(device_t *device, char *name);

/**
 * @brief 设置整体的默认值
 */
int app_bt_set_default_all(device_t *device);
#endif